// abstract class driver

#pragma once

#include "stdafx.h"
#include "DriveBehavior.h"

class Driver
{
public:
    Driver() {}
    virtual ~Driver() {}

    void Drive()
    {
        if (m_pDriveBehavior.get() != NULL)
        {
            m_pDriveBehavior->Drive();
        }
    }

    void SetDriveBehavior(std::shared_ptr<DriveBehavior> pDriveBehavior)
    {
        m_pDriveBehavior = pDriveBehavior;
    }

private:
    std::shared_ptr<DriveBehavior> m_pDriveBehavior;

};